Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

Csit.Delta.CalcClient.D8CalcInstance

D8-CalcInstance

Инстанс, внутри которого реализованы алгоритмы обработки данных. Исходной информацией для такой обработки являются значения (текущие и архивные) параметров любых других инстансов системы Дельта либо других параметров внутри того же инстанса.

Параметры D8-CalcInstance

Реализовано несколько видов параметров для выполнения различных задач. Каждый тип обладает своим набором настроек.
Все эти настройки кодируются специальным образом с помощью строки определения параметра ParamDef.
Параметр может иметь псевдоним ParamAlias.

Если псевдоним параметра задан, то идентификатор SID параметра будет иметь вид:

  <CiSid> ::= <InstanceName> "." <ParamAlias>

Если псевдоним не задан, то SID параметра будет содержать полную строку определения параметра:

  <CiSid> ::= <InstanceName> "." <ParamDef>
  <ParamDef> :: = "`" [{ <PropName> "=" <PropValue> "`" }] <ParamFunction> [ "(" <ArgumentList> ")" ]
  <ParamFunction> ::= CONST | CONSTPWL | WRP | F | SIM | DIAG

Внутри строки ParamDef содержаться пары ключ/значение, разделенные символом "`". Каждая пара задает значение для одного из свойств параметра.
Кроме того в строке содержится название функции параметра ParamFunction с опциональными аргументами. Эта функция определяет вид параметра, а значит и набор его свойств, и алгоритм вычисления его значений.

Общие атрибуты строки определения параметра

Для любого вида параметров можно задать следующие свойства:

  <CommonPropName> ::= "N" | "SN" | "AN" | "AKS" | "SCL" | "SCH" | "SCS" | "U" | "AU" | "AC" | "RH1" | "RH2" | "RL1" | "RL2" | "VL" | "VH" | "NV" | "NL" | "NH" 

  • N
    Локальное имя (ID8ParamInfo.LocalName)
     
  • SN
    Краткое имя (ID8ParamInfo.ShortName)
  • AN
    Дополнительное имя (ID8ParamInfo.AdditionalName)
     
  • AKS
    Код AKS (ID8ParamInfo.AKS)
     
  • SCL
    Минимум шкалы (ID8ParamInfo.Min)
     
  • SCH
    Максимум шкалы (ID8ParamInfo.Max)
     
  • SCS
    Перечень возможных значений параметра и их текстовых описаний (ID8ParamInfo.ScaleState). Дополнительно устанавливает минимум и максимум шкалы из перечня.
     
  • U
    Единицы измерения (ID8ParamInfo.Units)
     
  • AU
    Единицы измерения агрегированных значений (ID8ParamInfo.AggregatedUnits)
     
  • AC
    Коэффициент агрегирования (ID8ParamInfo.AggregationCoef)
  • RH1
    Верхняя предупредительная уставка (ID8ParamInfo.RangeUp1).
     
  • RH2
    Верхняя аварийная уставка (ID8ParamInfo.RangeUp2).
     
  • RL1
    Нижняя предупредительная уставка (ID8ParamInfo.RangeDown1).
     
  • RL2
    Нижняя аварийная уставка (ID8ParamInfo.RangeDown2).
     
  • VL
    Нижний предел достоверности (ID8ParamInfo.ValidLow).
     
  • VH
    Врехний предел достоверности (ID8ParamInfo.ValidHigh).
     
  • NV
    Номинальное значение.
     
  • NL
    Нижняя граница коридора допустимых значений.
     
  • NH
    Верхняя граница коридора допустимых значений.

Значений для SCS задается в виде пар, разделенных запятой. В каждой паре значение и текстовое описание разделяются двоеточием:

  <ScaleStateValue> ::= "(" <Number> : <Description> [{ "," <Number> : <Description> }] ")" 
  Например:
  SCS=(0:zero,1:one,2:two)

Например:

  `N="Активная мощность"`U=МВт`SCL=0`SCH=540

Параметры-константы

Предназначены для создания параметров, имеющих неизменное значение.

  <ConstParamDef> ::= "`" [{ "`" <ConstPropName> "=" <PropValue> }] "`CONST" [ "(" <ParamInfoPrototype> ")" ]
  <ConstPropName> ::= <CommonPropName> | "V" | "N" | "U" | "T" 
  • ParamInfoPrototype
    SID параметра, свойства НСИ которого нужно использовать для этого параметра.
     
  • N
    Локальное имя.
     
  • T
    Тип параметра (ID8ParamInfo.ParamType).
    Может быть:
    • A (Analogue) - аналоговый (это значение по умолчанию)
    • D (Discret) - дискретный
    • V (Vector) - векторный
  • V
    Значение константы.
     
  • U
    Единицы измерения. Если указано для дискретного параметра, то означает не единицы измерения, а название дискретного состояния.

Примеры:

  `T=A`N="Аналоговая константа"`V=12.3`U=кг
  `T=D`N="Дискретная величина"`V=1`U=включено
  `T=V`N="Строковое значение"`V="любой текст" 

Параметры-константы для кусочно линейной величины

Аналогичны параметрам CONST, но значение задается в виде кусочно-линейного графика во времени.

  <ConstpwlParamDef> ::= "`" [{ "`" <ConstpwlPropName> "=" <PropValue> }] "`CONSTPWL" 
  <ConstpwlPropName> ::= <CommonPropName> | "N" | "T" | "ST" | "T0" | "TZ" | "V" | "U" 
  • N
    Локальное имя.
     
  • T
    Тип параметра (ID8ParamInfo.ParamType).
    Может быть:
    • A (Analogue) - аналоговый (это значение по умолчанию)
    • D (Discret) - дискретный
       
  • ST
    Подтип параметра (ID8ParamInfo.Subtype)
    Например: ST=StepAvg
  • T0
    Начальный момент времени для кусочно-линейного графика, указанного в свойстве V. Задается в формате DateTime. Если содержит пробелы, то значение нужно заключить в кавычки. Если не указано, то используется текущее время (на момент создания параметра).
     
  • TZ
    Часовой пояс для моментов времени в атрибутах T0 и V.
  • V
    Точки графика значения во времени. Моменты времени задаются относительно T0.
     
  • U
    Единицы измерения.

Значение V задается в виде строки, разделенной запятыми. Каждая часть строки - это точка на графике, записанная виде смещения времени от T0 либо даты/времени и значения параметра, разделенных двоеточием:

  <ConstpwlValueStr> ::= "(" <Timeoffset> : <Value> [{ "," <Timeoffset> : <Value> }] ")" 
  <Timeoffset> ::= ( number ("ms" | "s" | "m" | "h" | "D" | "M" | "Y") ) | "-inf" | "+inf" | datetime
  <datetime> ::= YYYY [DD] [mm] [HH] [mm] [ss] [fff] [L]
  <Value> ::= double

В качестве смещения времени можно указать +inf или -inf, что означает плюс/минус бесконечность.
Если указано не смещение, а абсолютная величина даты/времени, то в конце может быть указана буква L, что означает часовой пояс пользователя.

Примеры:

  `T0=2017-01-01`V=(0:0,1h:10,3h:10,5h:9.5,+inf:9.5)`CONSTPWL
  `V=(-inf:100,0:100)`CONSTPWL
  `V=(20170103L:10,20170104L:13,20170105L:12,+inf:12)`CONSTPWL

Параметры-обертки

Предназначены для эффективной корректировки значения, единиц измерения и времени другого параметра. Для этого создается параметр-обертка, у которого НСИ совпадает с корректируемым параметром (и может быть дополнительно изменено), а значения параметра-обертки вычисляются от значений корректируемого параметра.

  <WrapperParamDef> ::= "`" [{ "`" <WrapperPropName> "=" <PropValue> }] "`WRP(<WrappedParam>)" 
  <WrapperPropName> ::= <CommonPropName> | "CABS" | "K" | "C" | "T" | "U" 
  • WrappedParam
    SID параметра, вокруг которого создается обертка.
     
  • K
    Коэффициент, на который нужно умножить значение параметра WrappedParam, чтобы получить значение параметра-обертки. Коэффициент применяется и к числовым полям НСИ, таким как границы достоверности, уставки и пр. По умолчанию 1.
     
  • C
    Коэффициент, который нужно прибавить к значению параметра WrappedParam, чтобы получить значение параметра-обертки. Коэффициент применяется и к числовым полям НСИ. По умолчанию 0.
     
  • CABS
    Если true, то коэффициент C будет помножен на модуль исходного значения. По умолчанию false.
     
  • T
    Временной сдвиг, который нужно прибавить к метке времени значения параметра WrappedParam, чтобы получить метку времени значение параметра-обертки.
     
  • U
    Единицы измерения, который нужно использовать взамен единиц измерения параметра WrappedParam.

Значением параметра-обертки W от параметра X будет:

  W = | K * X + C       , CABS = false
      | K * X + C * |X| , CABS = true

Например:

  `N="Замена килограмм на тонны"`K=0.001`U=т`WRP(INST.1)
  `N="Сдвиг меток времени на час вперед"`T=1h`WRP(INST.2)

Параметры-формулы

Параметры, значения которых вычисляются с помощью выражения языка формул D8FL.

  <FormulaParamDef> ::= "`" [{ "`" <FormulaPropName> "=" <PropValue> }] "`F(<FlMacro>)" 
  <FormulaPropName> ::= <CommonPropName> | "T" | "ST" | "R" | "r" | "S" | "I" | "W" | "WS" | "L" | "TZ" | "CS" | "O" 
  • FlMacro
    Сценарий расчета на языке D8FL. Значением параметра будет результат последнего выражения в сценарии.
     
  • T
    Тип параметра (ID8ParamInfo.ParamType).
    Может быть:
    • A (Analogue) - аналоговый (это значение по умолчанию)
    • D (Discret) - дискретный
       
  • ST
    Подтип параметра (ID8ParamInfo.Subtype)
    Например: ST=StepAvg
     
  • R
    Максимальный интервал пересчета значения. Если интервал пересчета не задан (или ноль), то текущее значение параметра будет обновляться при изменении исходных данных. Если задан R, то текущее значение будет обновляться по истечении указанного интервала с момента предыдущего расчета при условии, что исходные данные изменились. По умолчанию не задан.
     
  • r
    Минимальный интервал пересчета значения. Если интервал пересчета не задан (или ноль), то текущее значение параметр будет обновляться при изменении исходных данных. Если задан r, то текущее значение будет обновляться либо при изменении исходных данных, либо по истечении указанного интервала с момента предыдущего расчета. По умолчанию не задан.
     
  • S
    Шаг значения (ID8ParamInfo.Step). По умолчанию не задан.
     
  • I
    Интервал значения (ID8ParamInfo.Interval). По умолчанию не задан.
     
  • W
    Окно значения. Величина временного интервала, необходимого для расчета одного значения параметра.
    Если запрашивается значение вычисляемого параметра за момент t, то считается, что для расчета этого значения необходимы данные параметров-аргументов формулы за интервал (t; t + W).
     
  • WS
    Шаг окна. Используется для организации расчётов за интервалы нарастающим итогом, например, среднее значение за истекшие часы с начала суток.
    Если указан WS, то в качестве исходных данных для значения с меткой времени t будут использованы данные за интервал от ближайшего слева момента с шагом WS до S.
    Для такого значения I и W должны быть нулевыми, а S ненулевым.
     
  • L
    Задержка значения. Время, на которое отстают значения параметра от текущего времени или текущих меток времени параметров, используемых в формуле.
     
  • TZ
    Строка описания часового пояса, в котором рассчитываются метки времени параметра. По умолчанию - UTC.
     
  • CS
    Задает контрактный час или контрактные сутки. Задается в виде величины D8TimeInterval, которая будет прибавлена к исходной метке времени. Если указан, то применяется в часовом поясе TZ.
     
  • O
    Дополнительные опции параметра. Возможные значения:
    • NoRealtime
      У параметра не будет текущего значения и он не будет подписываться на изменения параметров-аргументов.
    • NoArchive
      У параметра не будет архивных значений. Все запросы архивных данных вернут пустой массив.
    • IndependentTime
      Меткка времени текущего значения параметра определяет только по текущему времени и настройкам параметра, а метки времени текущих значений параметров-аргументов не учитываются.

Примеры:

  `N=Сумма`S=1s`L=10s`F(INST.1 + INST.2)
  `N=Усреднение`I=1h`F( TAVG(INST.1) )
  `N=Нар_итог`WS=1D`S=1h`F( TAVG(INST.1) )
  `N=Смена_сум`Сумма`I=1D`TZ=+5`CS=8h`F(TITG(INST.1))

В качестве контекста выполнения сценария FlMacro используются свойства параметра, текущее время и настройки сессии, получаемые от хост-приложения (текущий часовой пояс, текущий язык и пр.).

Симуляционные параметры

Возвращает симулированное значение аналитической функции от времени. Опциональным добавляется псевдо-случайный шум.

  <SimParamDef> ::= "`" [{ "`" <SimPropName> "=" <PropValue> }] "`SIM" ["(<TimeFunction>)"]
  <SimPropName> ::= <CommonPropName> | "T" | "S" | "I" | "L" | "P" | "FP" | "A" | "U" | "TU" | "T0" | "CS" | "TZ" | "KN" | "RT" 
  • T
    Тип параметра (ID8ParamInfo.ParamType).
    Может быть:
    • A (Analogue) - аналоговый (это значение по умолчанию)
    • D (Discret) - дискретный
       
  • S (step)
    Шаг значения (ID8ParamInfo.Step). По умолчанию - одна секунда (1s).
     
  • I (interval)
    Интервал значения (ID8ParamInfo.Interval). По умолчанию - пустой, т.е. параметр будет мгновенным.
     
  • L (lag)
    Задержка значения (только для данных реального времени).
     
  • P (period)
    Период значения. По умолчанию - один час (1h).
    Если P указан, то считается, что аргумента x функции TimeFunction задается в виде фазы в радианах. Иначе считается, что x задается в виде разницы во времени относительно начала отсчета T0 и измеряется в интервалах времени TU.
     
  • FP (failure period)
    Периодичность отказов. По умолчанию - не задана.
    Если FP указан, то для значений будут сымитированы псевдослучайные периоды недостоверных данных. Длительность таких периодов задается этим параметром.
     
  • <TimeFunction>
    Функция f(x, A) от времени и матрицы коэффициентов, используемая для расчета значений параметра.
    В записи функции помимо математических операторов можно использовать аргумент x и коэффициенты a0, a1, ..., an.
    По умолчанию используется функция a0 + sin(x) * a1.
     
  • A
    Вектор коэффициентов для функции TimeFunction. Задается в квадратных скобках, в виде чисел, разделенных пробелами. Первое число соответствет коэффициенту a0, второе - a1 и т.д. Например: A=[0 1.1 2.2]
     
  • U (units)
    Единицы измерения параметра.
     
  • TU (time unit)
    Величина временного интервала, соответствующего единицы аргумента x функции TimeFunction. По умолчанию 1s - одна секунда.
     
  • T0 (time zero)
    Дата и время начала отсчета (нуля) аргумента x функции TimeFunction. Задается в UTC. По умолчанию используется текущее время на момент создания параметра.
     
  • CS
    Задает контрактный час или контрактные сутки. Задается в виде величины D8TimeInterval, которая будет прибавлена к исходной метке времени. Если указан, то применяется в часовом поясе TZ.
  • TZ
    Строка описания часового пояса, в котором рассчитываются метки времени параметра. По умолчанию - UTC.
     
  • KN (K noise)
    Уровень шума, добавлемого к значению параметра. При нулевом значение шум не добавляется.
     
  • RT (realtime)
    Признак того, нужно ли генерировать текущие данные для параметра. Если true, то текущие данные генерируются, а архивные значения за будущее время считаются неизвестными. Если false, то текущие данные не генерируются, а архивные значения считаются известными за любой момент времени.

Примеры:

  `SIM
  `N=Синусоиды`U=см`S=10s`L=3s`P=2m`SIM(sin(x) + 0.7 * sin(3*x))
  `N=Полином`RT=false`TU=1s`A=[1 2 3 4]`SIM(a0 + a1*x + a2*x*x + a3*x*x*x)
  `N=КонстантаПлюсШум`KN=1`SIM(10)
  `N=ВклВыкл`T=D`S=30s`P=1h`FP=1h`SIM(round(0.5 + sin(x) * sin(1 + x * 0.7) * 0.5 ))

Диагностические параметры

  <DiagParamDef> ::= "`" [{ "`" <CommonPropName> "=" <PropValue> }] "`DIAG(<DiagParamSpec>)" 

Значение DiagParamSpec определяет подвид параметра:

  • ParamCount
    Длина коллекции параметров инстанса. Включает и жесткие ссылки на параметры, слабые ссылки параметры, и пустые элементы, образовавшиеся после удаления параметров.
     
  • ParamAliveCount
    Число параметров, за исключением параметров, которые были уничтожены сборщиком мусора (для параметров, созданных со слабой ссылкой).
     
  • ParamAllocatedCount
    Число непустых записей в коллекции параметров. Включает жесткие и слабые ссылки на параметры, но не включает пустые элементы, образовавшиеся после удаления параметров.
     
  • ParamDeletedCount
    Число удаленных параметров.

Примеры:

  `DIAG(ParamCount)
  `N="Кол-во удаленных параметров"`U=шт`DIAG(ParamDeletedCount)

История версий

  • 1.0.21.0908
    • Добавлена поддерка атрибута TZ для симуляционных параметров.
  • 1.0.20.0304
    • Добавлена возможность задания имен состояний в шкале.